#include <iostream>

using namespace std;

template <typename T> class Foo {
    public:
        static size_t count() { return ctr; }
    private:
        static size_t ctr;
};

template <typename T> size_t Foo<T>::ctr = 0; // 定义并初始化 ctr

int main()
{
    // 实例化 static 成员 Foo<string>::ctr 和 Foo<string>::count
    Foo<string> fs;
    // 所有三个对象共享相同的 Foo<int>::ctr 和 Foo<int>::count 成员
    Foo<int> fi1, fi2, fi3;
    
    Foo<int> fi;                    // 实例化 Foo<int> 类和 static 数据成员 ctr
    auto ct = Foo<int>::count();    // 实例化 Foo<int>::count
    ct = fi.count();                // 使用 Foo<int>::count
    // ct = Foo::count();           // 错误：使用哪个模板实例的 count ？
}